home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)tn.d64 / cribbage.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  7KB  |  256 lines

  1. 10 PRINT"[147]"
  2. 20 REM BY DAN A. SIEBEN
  3. 30 PRINTSPC(8)"       CRIBBAGE":PRINTSPC(9)"INSTRUCTIONS? Y[146]ES/N[146]O
  4. 40 [151]53280,3:[151]53281,3
  5. 50 X[178][187]([171]TI)
  6. 60 [141]2290
  7. 70 [134]A%(52),V(5),S(5),G(1),T%(6),U%(6),C(3,5),C$(15)
  8. 80 [150][165]S(X)[178][181]((X[171]1)[173]13)[170]1:[150][165]V(X)[178]X[171]13[172]([165]S(X)[171]1):C$[178]""
  9. 90 FL[178][181]([187](1)[172]2):V1$[178]"A23456789TJQK":S1$[178]"(null)(null)(null)ATN"
  10. 100 L$[178]" GET A POINT FOR LAST CARD."
  11. 110 [141]780:[137]1660
  12. 120 M[178][171]1:N[178]4:C[178]5:[129]A[178]5[164]1[169][171]1:[129]B[178]A[164]1[169][171]1
  13. 130 X[178]X%(C):Y[178]U%(C):X%(C)[178]X%(B):U%(C)[178]U%(B):X%(B)[178]X:U%(B)[178]Y
  14. 140 [129]I[178]1[164]4:V(I)[178]X%(I):S(I)[178]U%(I):[130]:[141]390
  15. 150 [139]P[177]M[167]M[178]P:[129]I[178]1[164]6:W%(I)[178]X%(I):T%(I)[178]U%(I):[130]
  16. 160 [130]B:C[178]11[171]C:[130]A
  17. 170 [151]198,0:[153][200](C$,21)"WAITWHAT ARE YOUR DISCARDS (1-6) ?"
  18. 180 [153][200](C$,19);"                                      ";
  19. 190 G(0)[178]0:[129]I[178]0[164]1
  20. 200 [161]A$:[139]A$[178]""[167]200
  21. 210 [139]A$[178]" "[176]A$[178]"0"[167]180
  22. 220 X[178][197](A$):[139]X[179]1[176]X[177]6[176]X[178]G(0)[167]200
  23. 230 G(I)[178][197](A$):[153][200](C$,19)[163][171]2[170]6[172]X)"^":[130]
  24. 240 [161]A$:[139]A$[178]""[167]240
  25. 250 [139]A$[178]" "[167]180
  26. 260 [137]1720
  27. 270 [129]I[178]1[164]3:C(I,5)[178]A%(13):[130]
  28. 280 [129]I[178]1[164]4:C(1,I)[178]13[172](T%(I)[171]1)[170]W%(I):[130]
  29. 290 J[178]0:[129]I[178]1[164]6:[139]I[178]G(0)[176]I[178]G(1)[167]310
  30. 300 J[178]J[170]1:C(2,J)[178]A%(I[170]6)
  31. 310 [130]
  32. 320 [129]I[178]1[164]2:C(3,I)[178]A%(6[170]G(I[171]1)):C(3,I[170]2)[178]13[172](T%(I[170]4)[171]1)[170]W%(I[170]4):[130]
  33. 330 [129]A[178]1[164]3:[129]B[178]1[164]5:V(B)[178][165]V(C(A,B)):S(B)[178][165]S(C(A,B)):[130]:N[178]5:[141]390
  34. 340 C(A,0)[178]P:[130]:[129]I[178]1[164]4:W%(I)[178][165]V(C(1,I)):X%(I)[178][165]V(C(2,I)):[130]
  35. 350 [153]"";:[129]K[178]1[164]4:V[178][165]V(C(2,K)):S[178][165]S(C(2,K)):[141]1760
  36. 360 [153]"ONONONONONONONWAIT";:[130]
  37. 370 [141]800:[141]2120:[141]2190
  38. 380 [153][200](C$,12)[166]12)"YOU:"P2"   ME:"P1:[141]2200:FL[178]1[171]FL:[137]110
  39. 390 P[178]0:[139]S(1)[178]S(2)[175]S(2)[178]S(3)[175]S(3)[178]S(4)[167]P[178]4:[139]N[178]5[175]S(1)[178]S(5)[167]P[178]5
  40. 400 [139]P[178]4[175]A[178]3[167]P[178]0
  41. 410 [139]N[178]4[167]450
  42. 420 [129]I[178]1[164]4:[139]V(I)[178]11[175]S(I)[178]S(5)[167]P[178]P[170]1
  43. 430 [130]:S(5)[178]0
  44. 440 [153]"
  45. 450 FORI=1TON-1:V=20:FORJ=ITON:IFV(J)<VTHENV=V(J):U=J
  46. 460 NEXT:V(U)=V(I):V(I)=V:NEXT
  47. 470 G(0)=0:G(1)=0:U=0:V=1:W=0:X=0:Y=0:Z=0:FORI=1TON-1
  48. 480 IFV(I)=V(I+1)THENG(U)=G(U)+1:X=I:GOTO550
  49. 490 IFI>1THENU=1
  50. 500 IFV(I+1)-V(I)<>1THEN530
  51. 510 IFW=0THENV=V+1:Z=I+1:IFV=2THENY=I
  52. 520 GOTO550
  53. 530 IFV>2THENW=1:GOTO550
  54. 540 V=1
  55. 550 NEXT
  56. 560 U=G(0)^2+G(1)^2+G(0)+G(1)
  57. 570 W=1:FORI=YTOZ:IFV(X)=V(I)THENW=U
  58. 580 NEXT
  59. 590 IFU=0THENW=1
  60. 600 IFU=6THENW=3
  61. 610 IFV<3THENV=0
  62. 620 P=V*W+U+P
  63. 630 Z=0:Y=0
  64. 640 FORI=1TON:IFV(I)>10THENV(I)=10
  65. 650 NEXT
  66. 660 FORI=1TON:Y=Y+V(I):NEXT:IFY=15THENP=P+2:RETURN
  67. 670 FORI=1TO3:FORJ=I+1TO4:IFN=4THEN690
  68. 680 FORZ=J+1TO5
  69. 690 IFV(I)+V(J)+V(Z)=15THENP=P+2
  70. 700 IFN=4THEN740
  71. 710 IFY-V(I)-V(J)-V(Z)=15THENP=P+2
  72. 720 IFN=4THEN740
  73. 730 NEXTZ
  74. 740 NEXTJ,I
  75. 750 FORI=1TON:IFY-V(I)=15THENP=P+2
  76. 760 NEXT
  77. 770 RETURN
  78. 780 FORA=1TO52:A%(A)=A:NEXT
  79. 790 FORA=1TO52:B=INT(RND(1)*52+1):C=A%(A):A%(A)=A%(B):A%(B)=C:NEXT:RETURN
  80. 800 FORI=1TO4
  81. 810 W%(I+4)=W%(I):IFW%(I)>10THENW%(I+4)=10
  82. 820 X%(I+4)=X%(I):IFX%(I)>10THENX%(I+4)=10
  83. 830 NEXT
  84. 840 N1=0:N2=0:C=0:SM=0
  85. 850 IFFL=0THEN1050
  86. 860 IFN2<>4THEN890
  87. 870 IFN1=4THEN1300
  88. 880 GOTO1050
  89. 890 GOSUB2230:POKE158,0:B$="YOUR PLAY?":GOSUB1900
  90. 900 GETA$:IFA$=""THEN900
  91. 910 B$="":GOSUB1900
  92. 920 A=VAL(A$):IFA$="0"THEN2520
  93. 930 IFA<1ORA>4THEN890
  94. 940 IFX%(A)=0THENB$="CARD ALREADY PLAYED!":GOSUB1900:GOSUB2200:GOTO890
  95. 950 IFSM+X%(A+4)>31THENB$="TOTAL IS MORE THAN 31!":GOSUB1900:GOSUB2200:GOTO890
  96. 960 SM=SM+X%(A+4):N2=N2+1:C=C+1:A%(C)=X%(A)
  97. 970 GOSUB1450
  98. 980 REM IFA=4THEN2208
  99. 990 REM PRINT"";TAB(A*3-2)"[144][192][192][157][157]  [157][157]  [157][157]  [157][157]  [157][157]  [157][157]  ":GOTO2210
  100. 1000 PRINT"";TAB(A*7-6)"[192][192][192][192][192][157][157][157][157][157]     [157][157][157][157][157]     [157][157][157][157][157]     [157][157][157][157][157]";
  101. 1010 PRINT"     [157][157][157][157][157]     [157][157][157][157][157]     [157][157][157][157][157]     [157][157][157][157][157][192][192][192][192][192][157][157][157][157][157]";
  102. 1020 V=FNV(C(2,A)):S=FNS(C(2,A)):Y=1:P2=P2+P:X%(A)=0:GOSUB2220:GOSUB1640
  103. 1030 IFSM<>31THEN1050
  104. 1040 GOSUB2240:Y=0:C=0:SM=0:Z=0
  105. 1050 IFN1<>4THEN1120
  106. 1060 IFN2=4THEN1300
  107. 1070 IFA$<>"0"THEN860
  108. 1080 ONY+1GOTO890,1090,1110
  109. 1090 B$="YOU"+L$:P2=P2+1:GOSUB1640
  110. 1100 GOSUB1900:GOSUB2240:Y=0:C=0:SM=0:GOTO860
  111. 1110 B$="I"+L$:P1=P1+1:GOSUB1620:GOTO1100
  112. 1120 M=-1:N=0:U=C:V=SM:C=C+1
  113. 1130 FORL=1TO4:IFW%(L)=0THEN1170
  114. 1140 IFSM+W%(L+4)>31THEN1170
  115. 1150 N=N+1:SM=SM+W%(L+4):A%(C)=W%(L):GOSUB1450:SM=V
  116. 1160 IFP>MTHENM=P:X=L
  117. 1170 NEXT
  118. 1180 C=U:IFN<>0THEN1360
  119. 1190 IFA$<>"0"THEN1230
  120. 1200 IFZ=1THEN1250
  121. 1210 B$="I"+L$:C=0:SM=0:P1=P1+1:GOSUB1900:GOSUB2240
  122. 1220 GOSUB1620:GOTO860
  123. 1230 IFN2<>4THEN1280
  124. 1240 IFY=2THEN1210
  125. 1250 B$="YOU"+L$:P2=P2+1:GOSUB1640:C=0:SM=0:Z=0
  126. 1260 A$="":GOSUB1900:GOSUB2240
  127. 1270 GOTO1050
  128. 1280 IFZ=1THEN860
  129. 1290 B$="GO...":GOSUB1900:GOSUB2200:Z=1:GOTO860
  130. 1300 IFY=0THEN1350
  131. 1310 IFY=1THEN1340
  132. 1320 B$="I"+L$:P1=P1+1:GOSUB1900:GOSUB2200
  133. 1330 GOSUB1620:GOTO1350
  134. 1340 B$="YOU"+L$:P2=P2+1:GOSUB1900:GOSUB1640:GOSUB2200
  135. 1350 RETURN
  136. 1360 C=C+1:N1=N1+1:IFC<>1ORW%(4)=0THEN1390
  137. 1370 IFX>3THEN1390
  138. 1380 IFW%(X)=5ORW%(X)=0THENX=X+1:GOTO1370
  139. 1390 SM=SM+W%(X+4):A%(C)=W%(X)
  140. 1400 V=FNV(C(1,X)):S=FNS(C(1,X)):P=M:Y=2:P1=P1+P:GOSUB2220:W%(X)=0:GOSUB1620
  141. 1410 IFSM<>31THEN1430
  142. 1420 GOSUB2200:GOSUB2240:Y=0:C=0:SM=0:GOTO860
  143. 1430 IFA$="0"ORA$="G"THEN1050
  144. 1440 GOTO860
  145. 1450 P=0:IFC=1THENRETURN
  146. 1460 IFSM=15ORSM=31THENP=P+2
  147. 1470 FORI=CTOINT(C/5)*(C-4)+2STEP-1
  148. 1480 IFA%(I)<>A%(I-1)THEN1540
  149. 1490 ONC-I+1GOTO1500,1510,1520
  150. 1500 P=P+2:GOTO1530
  151. 1510 P=P+4:GOTO1530
  152. 1520 P=P+6
  153. 1530 NEXT
  154. 1540 IFC=2THENRETURN
  155. 1550 W=0:FORI=3TOC:GOSUB1560:NEXT:P=P+W:RETURN
  156. 1560 FORJ=1TOC:A%(J+10)=A%(C-J+1):NEXT
  157. 1570 FORK=1TOI-1:FORJ=K+1TOI:IFA%(K+10)<A%(J+10)THEN1590
  158. 1580 B=A%(K+10):A%(K+10)=A%(J+10):A%(J+10)=B
  159. 1590 NEXTJ,K
  160. 1600 FORK=1TOI-1:IFA%(K+10)<>A%(K+11)-1THENRETURN
  161. 1610 NEXTK:W=I:RETURN
  162. 1620 GOSUB2200:IFP1>120THENGOSUB2190:PRINTLEFT$(C$,13)SPC(10)"I WIN!"P1"TO"P2:GOSUB2150
  163. 1630 RETURN
  164. 1640 GOSUB2200:IFP2>120THENGOSUB2190:PRINTLEFT$(C$,13)SPC(9)"YOU WIN!"P2"TO"P1:GOSUB2150
  165. 1650 RETURN
  166. 1660 IFFL=0THENGOSUB2190:PRINT"YOUR CRIB..."
  167. 1670 IFFL=1THENGOSUB2190:PRINT"MY CRIB..."
  168. 1680 POKE59468,12:PRINT"";
  169. 1690 FORK=1TO6:V=FNV(A%(K+6)):S=FNS(A%(K+6))
  170. 1700 U%(K)=FNS(A%(K)):X%(K)=FNV(A%(K))
  171. 1710 GOSUB1760:PRINT"[157][145][145][145][145][145][145][145]";:NEXT:PRINT:PRINT"THINKING":GOTO120
  172. 1720 GOSUB2190:V=FNV(A%(13)):S=FNS(A%(13)):PRINTTAB(32)"";:GOSUB1760
  173. 1730 PRINTLEFT$(C$,9)
  174. 1740 PRINT"YOU     ME     TOTAL      [145]"
  175. 1750 GOSUB2250:GOTO270
  176. 1760 V$=MID$(V1$,V,1):S$=MID$(S1$,S,1)
  177. 1770 IFS$="[211]"ORS$="[218]"THENS$=""+S$
  178. 1780 IFS$="[216]"ORS$="[193]"THENS$="[151]"+S$
  179. 1790 FORI=1TO15:C$(I)=" ":NEXT
  180. 1800 IFV=3ORV>7THENC$(2)=S$:C$(14)=S$
  181. 1810 IFV>3THENC$(4)=S$:C$(6)=S$:C$(10)=S$:C$(12)=S$
  182. 1820 IFV=2ORV>9THENC$(5)=S$:C$(11)=S$
  183. 1830 IFV>5THENC$(7)=S$:C$(9)=S$
  184. 1840 IFV=1ORV=3ORV=5ORV=7ORV=9THENC$(8)=S$
  185. 1850 PRINT"[176][192][192][192][192][192][174][157][157][157][157][157][157][157]";:FORI=1TO7:PRINT"[221]     [221][157][157][157][157][157][157][157]";:NEXT:PRINT"[173][192][192][192][192][192][189]";
  186. 1860 PRINT"[157][157][157][157][157][157][145][145][145][145][145][145][145]"V$S$"[157]";
  187. 1870 FORI=1TO15STEP3:FORJ=0TO2:PRINTC$(I+J);:NEXT:PRINT"[157][157][157]";:NEXT
  188. 1880 PRINT""S$""V$"";
  189. 1890 RETURN
  190. 1900 PRINTLEFT$(C$,22);:FORI=1TO84:PRINT" ";:NEXT:PRINTLEFT$(C$,22);B$;"":RETURN
  191. 1910 PRINT"";:FORK=1TO5:V=FNV(C(X,K)):S=FNS(C(X,K))
  192. 1920 GOSUB1760:IFK=4THENPRINT"";
  193. 1930 IFK=5THENPRINT:RETURN
  194. 1940 PRINT"[145][145][145][145][145][145][145]";:NEXT:RETURN
  195. 1950 IFFL=YTHEN1990
  196. 1960 PRINT:PRINT"I HAVE"C(X,0)"POINTS":P1=P1+C(X,0):GOSUB1620:GOSUB2550
  197. 1970 IFPEEK(203)=64 THEN1970
  198. 1980 RETURN
  199. 1990 PRINT""
  200. 2000 POKE198,0:PRINT"[145][145][145]HOW MANY POINTS";
  201. 2010 INPUT"[160][160][160][157][157][157][157][157]";PT$:Q=VAL(PT$)
  202. 2020 ZZ=C(Z,0):IFPT$="0[160][160]"THEN2050
  203. 2030 IFQ<1ORQ-INT(Q)<>0THENPRINT"[145]":GOTO2000
  204. 2040 IFQ>ZZTHENPRINTLEFT$(C$,20);"TOO MANY...TRY AGAIN!":GOTO2000
  205. 2050 IFQ<ZZTHENPRINTLEFT$(C$,22);"MUGGINS FOR"ZZ-Q"[157] POINTS!":P1=P1+ZZ-Q:GOSUB1620:GOSUB2070:GOSUB2200
  206. 2060 P2=P2+Q:GOSUB2200:GOSUB1640:RETURN
  207. 2070 IFPEEK(515)=255THEN2070
  208. 2080 RETURN
  209. 2090 GOSUB2190:PRINT"[146]":PRINT"";:IFFL=0THENPRINTLEFT$(C$,6);A$
  210. 2100 IFFL=1THENPRINTLEFT$(C$,6);B$
  211. 2110 GOSUB1910:GOSUB1950:RETURN
  212. 2120 A$="I COUNT FIRST":B$="YOU COUNT FIRST":X=FL+1:Y=1:Z=2:GOSUB2090
  213. 2130 A$="YOUR HAND":B$="MY HAND":X=2-FL:Y=0:Z=2:GOSUB2090
  214. 2140 A$="YOUR CRIB":B$="MY CRIB":X=3:Z=3:GOSUB2090:RETURN
  215. 2150 PRINTSPC(12)"ANOTHER GAME?"
  216. 2160 GETA$:IFA$=""THEN2160
  217. 2170 IFA$="N"THENGOSUB2190:END
  218. 2180 CLR:GOTO70
  219. 2190 PRINT"[147]";:RETURN
  220. 2200 FORI=1TO1000:NEXT:RETURN
  221. 2210 FORI=1TO5000:NEXT:RETURN
  222. 2220 PRINT:PRINTLEFT$(C$,11+Y)SPC(C*4-4);:GOSUB1760:PRINT"[145][145][145][145]"
  223. 2230 PRINT""TAB(3)RIGHT$(C$,10)P2:PRINT""TAB(10)RIGHT$(C$,10)P1:PRINT""TAB(20)RIGHT$(C$,10)SM"[157] ":RETURN
  224. 2240 PRINTLEFT$(C$,12);:FORI=1TO10*40:PRINT" ";:NEXT:PRINT"":RETURN
  225. 2250 IFFNV(A%(13))<>11THENRETURN
  226. 2260 IFFL=0THENA$="YOU":P2=P2+2:GOSUB1640
  227. 2270 IFFL=1THENA$="I":P1=P1+2:
  228. 2280 B$=A$+" GET 2 POINTS FOR THE JACK":GOSUB1900:RETURN
  229. 2290 GETAN$:IFAN$="N"THENRETURN
  230. 2300 IFAN$="Y"THEN2320
  231. 2310 GOTO2290
  232. 2320 PRINT"[147]INSTUCTIONS:"
  233. 2330 PRINT"TO SELECT DISCARDS USE KEYS 1 THRU 6    THEN RETURN."
  234. 2340 PRINT"TO CHANGE CHOICE OF DISCARDS PRESS THE  SPACE BAR BEFORE ";
  235. 2350 PRINT"PRESSING RETURN."
  236. 2360 PRINT"ONCE YOU HAVE PRESSED THE RETURN KEY,   YOU'RE STUCK WITH YOUR CHOICE."
  237. 2370 REM FORD=1TO10000:NEXTD
  238. 2380 PRINT"TO SELECT A CARD TO PLAY USE KEYS 1 THRU4."
  239. 2390 PRINT"***CHOOSE CAREFULLY***[146]"
  240. 2400 PRINT"YOU WON'T BE ABLE TO CHANGE YOU'RE      CHOICE."
  241. 2410 PRINT"IF YOU CAN'T PLAY A CARD TYPE 0."
  242. 2420 PRINTSPC(13)"HIT ANY KEY":WAIT198,1
  243. 2430 PRINT"[147]THE COMPUTER WILL KEEP SCORE BUT YOU    MUST COUNT YOUR OWN CARDS."
  244. 2440 PRINT"***COUNT CAREFULLY***[146]"
  245. 2450 PRINT"THE COMPUTER WILL TAKE ALL THE POINTS   THAT YOU MISS!"
  246. 2460 PRINT"     INSTRUCTIONS AGAIN? ";
  247. 2470 PRINT"Y[146]ES/N[146]O"
  248. 2480 GETA$:IFA$<>"Y"ANDA$<>"N"THEN2480
  249. 2490 IFA$<>"Y"THENRETURN
  250. 2500 GOTO2320
  251. 2510 PRINTLEFT$(C$,11)YOU"P2"  ME"P1"  TTL"SM
  252. 2520 [129]P[178]1[164]4:[139]X%(P)[177]0[175]X%(P)[170]SM[179]32[167]B$[178]"YOU HAVE A PLAYABLE CARD!!":[137]10
  253. 2530 [130]P:[137]1050
  254. 2540 [141]1900:[141]2200:[137]890
  255. 2550 [153]"             HIT ANY KEY":[146]198,1:[142]
  256.